#pragma once 
#include <string>
#include <sys/types.h>
#include <sys/socket.h>

class util
{
  public:
    static int Readline(int sock,std::string& out)
    {
      char ch='x';

      while(ch!='\n')
      {
       ssize_t s= recv(sock,&ch,1,0);
        if(s>0)
        {
         if(ch=='\r')
          {
            //查看是否是\n
            recv(sock,&ch,1,MSG_PEEK);
            if(ch=='\n')
            {        
               recv(sock,&ch,1,0);
            }else 
            {
              ch='\n';
            }
          }
          out.push_back(ch);

      }else if(s==0)
      {
        return 0;
      }else {
        return -1;
      }
    }
      return out.size();
  }
    static bool CutString(const std::string& target,std::string& sub1_out,std::string& sub2_out,std::string sep)
    {
      size_t pos=target.find(sep);
      if(pos!=std::string::npos)
      {
        //substr() 是[ ) 的 可以指定区域的字符返回
        sub1_out=target.substr(0,pos);
        sub2_out=target.substr(pos+sep.size());
        return true;
      }
      return false;
    }
};
